﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using saigonbook.Biz;

namespace quanlybansach.Frm
{
    public partial class Frm_quanlydonhang : Form
    {
        public Frm_quanlydonhang()
        {
            InitializeComponent();

            DataGV_danhsachdonhang.Columns.Add("Col1", "STT");
            DataGV_danhsachdonhang.Columns.Add("Col2", "Mã ĐH");
            DataGV_danhsachdonhang.Columns.Add("Col3", "Mã KH");
            DataGV_danhsachdonhang.Columns.Add("Col4", "Họ tên");
            DataGV_danhsachdonhang.Columns.Add("Col5", "Ngày mua");
            DataGV_danhsachdonhang.Columns.Add("Col6", "Ngày giao");
            DataGV_danhsachdonhang.Columns.Add("Col7", "Địa chỉ giao hàng");
            DataGV_danhsachdonhang.Columns.Add("Col8", "Tổng tiền (VNĐ)");
            DataGV_danhsachdonhang.Columns.Add("Col9", "Tình trạng");
            DataGV_danhsachdonhang.Columns[0].Width = 50;
            DataGV_danhsachdonhang.Columns[1].Width = 70;
            DataGV_danhsachdonhang.Columns[2].Width = 90;
            DataGV_danhsachdonhang.Columns[3].Width = 120;
            DataGV_danhsachdonhang.Columns[4].Width = 100;
            DataGV_danhsachdonhang.Columns[5].Width = 100;
            DataGV_danhsachdonhang.Columns[6].Width = 155;
            DataGV_danhsachdonhang.Columns[7].Width = 120;
            DataGV_danhsachdonhang.Columns[8].Width =100;
            DataGV_danhsachdonhang.AllowUserToAddRows = false;

            danhsachchitietdonhang.Columns.Add("Col1", "STT");
            danhsachchitietdonhang.Columns.Add("Col2", "Mã sách");
            danhsachchitietdonhang.Columns.Add("Col3", "Tên sách");
            danhsachchitietdonhang.Columns.Add("Col4", "Giá (VNĐ)");
            danhsachchitietdonhang.Columns.Add("Col5", "Số lượng");
            danhsachchitietdonhang.Columns.Add("Col6", "Thành tiền (VNĐ)");
            danhsachchitietdonhang.Columns[0].Width = 40;
            danhsachchitietdonhang.Columns[1].Width = 80;
            danhsachchitietdonhang.Columns[2].Width = 130;
            danhsachchitietdonhang.Columns[3].Width = 90;
            danhsachchitietdonhang.Columns[4].Width = 90;
            danhsachchitietdonhang.Columns[5].Width = 130;
            danhsachchitietdonhang.AllowUserToAddRows = false;

            List<string> trangthai1 = new List<string>();
            trangthai1.Add("Tất cả");
            trangthai1.Add("chưa liên lạc");
            trangthai1.Add("chưa giao");
            trangthai1.Add("đã giao");
            cbb_timkiemtrangthai.DataSource = trangthai1;

            btncapnhat.Enabled = false;
            btnhuy.Enabled = false;
            
        }

        private List<BIZ_donhang> danhsachdonhang = new List<BIZ_donhang>();

        private void Frm_quanlydonhang_Load(object sender, EventArgs e)
        {
            danhsachdonhang.Clear();
            danhsachdonhang = BIZ_donhang.Select_donhang();
            int stt = 0;
            foreach (BIZ_donhang dh in danhsachdonhang)
            {
                stt++;
                string tongtien = dh.tongtien.ToString("c");
                tongtien = tongtien.Substring(1, tongtien.LastIndexOf(".") - 1);
                string ngaymuahang = dh.ngaymuahang.Date.ToString("dd-MM-yyyy");
                string ngaygiaohang = dh.ngaygiaohang.Date.ToString("dd-MM-yyyy");
                DataGV_danhsachdonhang.Rows.Add(stt, dh.madonhang, dh.user.username, dh.user.hoten, 
                                                ngaymuahang, ngaygiaohang, dh.diachigiaohang, tongtien, dh.tinhtrang);
            }
        }

        string trangthaidonhang = "";

        private void chitietdonhang_Click(object sender, DataGridViewCellEventArgs e)
        {
            btncapnhat.Enabled = true;
            btnhuy.Enabled = true;
            danhsachchitietdonhang.Rows.Clear();
            if (DataGV_danhsachdonhang.CurrentCell != null)
            {
                int ma = int.Parse(DataGV_danhsachdonhang.CurrentRow.Cells[1].Value.ToString().Trim());
                BIZ_donhang donhang = new BIZ_donhang();
                foreach (BIZ_donhang dh in danhsachdonhang)
                {
                    if (dh.madonhang == ma)
                    {
                        donhang = dh;
                        break;
                    }
                }
                txtmadonhang.Text = donhang.madonhang.ToString();
                txttenkhachhang.Text = donhang.user.hoten.ToUpper();
                txtsodienthoai.Text = donhang.user.sodienthoai;
                txtdiachi.Text = donhang.diachigiaohang;
                string tt = donhang.tongtien.ToString("c");
                tt = tt.Substring(1, tt.LastIndexOf(".") - 1) + " VNĐ";
                txttongtien.Text = tt;
                txtngaydatmua.Text = donhang.ngaymuahang.ToString("dd-MM-yyyy");
                ngaygiao.Value = donhang.ngaygiaohang;
                trangthaidonhang = donhang.tinhtrang;
                if (donhang.tinhtrang == "chưa liên lạc")
                {
                    List<string> trangthai = new List<string>();
                    trangthai.Add("chưa liên lạc");
                    trangthai.Add("chưa giao");
                    trangthai.Add("đã giao");
                    trangthai.Add("hủy");
                    cbb_tinhtrang.DataSource = trangthai;
                }
                else
                    if (donhang.tinhtrang == "chưa giao")
                    {
                        List<string> trangthai = new List<string>();
                        trangthai.Add("chưa giao");
                        trangthai.Add("đã giao");
                        trangthai.Add("hủy");
                        cbb_tinhtrang.DataSource = trangthai;
                    }
                    else
                    {
                        if (donhang.tinhtrang == "đã giao")
                        {
                            List<string> trangthai = new List<string>();
                            trangthai.Add("đã giao");
                            trangthai.Add("hủy");
                            cbb_tinhtrang.DataSource = trangthai;
                        }
                        else
                        {
                            List<string> trangthai = new List<string>();
                            trangthai.Add("hủy");
                            cbb_tinhtrang.DataSource = trangthai;
                            txtdiachi.ReadOnly = true;
                            ngaygiao.Enabled = false;
                        }
                    }

                List<BIZ_chitietdonhang> ds = new List<BIZ_chitietdonhang>();
                ds = donhang.Chitietdonhang;
                int stt = 0;
                BIZ_sach s = new BIZ_sach();
                foreach(BIZ_chitietdonhang ct in ds)
                {
                    stt++;
                    string gia = ct.sach.giaban.ToString("c");
                    gia = gia.Substring(1, gia.LastIndexOf(".") - 1);
                    string thanhtien = (ct.soluong * ct.sach.giaban).ToString("c");
                    thanhtien = thanhtien.Substring(1, thanhtien.LastIndexOf(".") - 1);
                    danhsachchitietdonhang.Rows.Add(stt, ct.sach.masach, ct.sach.tensach, gia, ct.soluong, thanhtien);
                }
            }
        }

        private void btndong_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btntimkiem_Click(object sender, EventArgs e)
        {
            DataGV_danhsachdonhang.Rows.Clear();
            if (cbb_timkiemtrangthai.Text.Equals("Tất cả"))
            {
                List<BIZ_donhang> ds = danhsachdonhang;
                ds = (from d in ds
                      where d.ngaymuahang.Date >= DateTime.Parse(tungay.Value.ToString()).Date
                            && d.ngaymuahang <= DateTime.Parse(denngay.Value.ToString()).Date
                      select d).ToList();
                int stt = 0;
                foreach (BIZ_donhang dh in ds)
                {
                    stt++;
                    string tongtien = dh.tongtien.ToString("c");
                    tongtien = tongtien.Substring(1, tongtien.LastIndexOf(".") - 1);
                    string ngaymuahang = dh.ngaymuahang.Date.ToString("dd-MM-yyyy");
                    string ngaygiaohang = dh.ngaygiaohang.Date.ToString("dd-MM-yyyy");
                    DataGV_danhsachdonhang.Rows.Add(stt, dh.madonhang, dh.user.username, dh.user.hoten, 
                                                    ngaymuahang, ngaygiaohang, dh.diachigiaohang, tongtien, dh.tinhtrang);
                }
            }
            else
            {
                List<BIZ_donhang> ds = danhsachdonhang;
                ds = (from d in ds
                      where d.tinhtrang.ToLower().Equals(cbb_timkiemtrangthai.Text) 
                            && d.ngaymuahang.Date >= DateTime.Parse(tungay.Value.ToString()).Date 
                            && d.ngaymuahang <= DateTime.Parse(denngay.Value.ToString()).Date 
                      select d).ToList();
                int stt = 0;
                foreach (BIZ_donhang dh in ds)
                {
                    stt++;
                    string tongtien = dh.tongtien.ToString("c");
                    tongtien = tongtien.Substring(1, tongtien.LastIndexOf(".") - 1);
                    string ngaymuahang = dh.ngaymuahang.Date.ToString("dd-MM-yyyy");
                    string ngaygiaohang = dh.ngaygiaohang.Date.ToString("dd-MM-yyyy");
                    DataGV_danhsachdonhang.Rows.Add(stt, dh.madonhang, dh.user.username, dh.user.hoten,
                                                    ngaymuahang, ngaygiaohang, dh.diachigiaohang, tongtien, dh.tinhtrang);
                }
            }
        }

        private void btnhuy_Click(object sender, EventArgs e)
        {
            int ma = int.Parse(txtmadonhang.Text);
            BIZ_donhang donhang = new BIZ_donhang();
            foreach (BIZ_donhang dh in danhsachdonhang)
            {
                if (dh.madonhang == ma)
                {
                    donhang = dh;
                    break;
                }
            }
            txtdiachi.Text = donhang.diachigiaohang;
            ngaygiao.Value = donhang.ngaygiaohang;
            cbb_tinhtrang.Text = donhang.tinhtrang;
        }

        private void btncapnhat_Click(object sender, EventArgs e)
        {
            if (DateTime.Parse(ngaygiao.Value.ToString()).Date < DateTime.Parse(txtngaydatmua.Text).Date)
                MessageBox.Show("'Ngày giao hàng' không hợp lệ!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else
                if ("".Equals(txtdiachi.Text))
                    MessageBox.Show("Chưa nhập 'Địa chỉ giao hàng'!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                else
                {
                    BIZ_donhang donhang = new BIZ_donhang();
                    donhang.madonhang = int.Parse(txtmadonhang.Text);
                    donhang.ngaygiaohang = DateTime.Parse(ngaygiao.Value.ToString()).Date;
                    donhang.diachigiaohang = txtdiachi.Text;
                    donhang.tinhtrang = cbb_tinhtrang.Text;
                    if (donhang.tinhtrang.Equals("hủy"))
                    {
                        if (MessageBox.Show("Bạn có muốn hủy đơn hàng có mã " + donhang.madonhang + " không?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            if (trangthaidonhang.Equals("chưa liên lạc") || trangthaidonhang.Equals("chưa giao"))
                            {
                                donhang.Xoa_donhangchualienlac(donhang);
                                MessageBox.Show("Hủy đơn hàng thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                DataGV_danhsachdonhang.Rows.Clear();
                                danhsachdonhang = BIZ_donhang.Select_donhang();
                                int stt = 0;
                                foreach (BIZ_donhang dh in danhsachdonhang)
                                {
                                    stt++;
                                    string tongtien = dh.tongtien.ToString("c");
                                    tongtien = tongtien.Substring(1, tongtien.LastIndexOf(".") - 1);
                                    string ngaymuahang = dh.ngaymuahang.Date.ToString("dd-MM-yyyy");
                                    string ngaygiaohang = dh.ngaygiaohang.Date.ToString("dd-MM-yyyy");
                                    DataGV_danhsachdonhang.Rows.Add(stt, dh.madonhang, dh.user.username, dh.user.hoten,
                                                                    ngaymuahang, ngaygiaohang, dh.diachigiaohang, tongtien, dh.tinhtrang);
                                }
                                txtmadonhang.Text = null;
                                txttenkhachhang.Text = null;
                                txtsodienthoai.Text = null;
                                txttongtien.Text = null;
                                txtngaydatmua.Text = null;
                                txtdiachi.Text = null;
                                cbb_tinhtrang.Text = null;
                            }
                            else
                            {
                                donhang.Xoa_donhangdalienlac(donhang);
                                MessageBox.Show("Hủy đơn hàng thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                DataGV_danhsachdonhang.Rows.Clear();
                                danhsachdonhang = BIZ_donhang.Select_donhang();
                                int stt = 0;
                                foreach (BIZ_donhang dh in danhsachdonhang)
                                {
                                    stt++;
                                    string tongtien = dh.tongtien.ToString("c");
                                    tongtien = tongtien.Substring(1, tongtien.LastIndexOf(".") - 1);
                                    string ngaymuahang = dh.ngaymuahang.Date.ToString("dd-MM-yyyy");
                                    string ngaygiaohang = dh.ngaygiaohang.Date.ToString("dd-MM-yyyy");
                                    DataGV_danhsachdonhang.Rows.Add(stt, dh.madonhang, dh.user.username, dh.user.hoten,
                                                                    ngaymuahang, ngaygiaohang, dh.diachigiaohang, tongtien, dh.tinhtrang);
                                }
                                txtmadonhang.Text = null;
                                txttenkhachhang.Text = null;
                                txtsodienthoai.Text = null;
                                txttongtien.Text = null;
                                txtngaydatmua.Text = null;
                                txtdiachi.Text = null;
                                cbb_tinhtrang.Text = null;
                            }
                        }
                    }
                    else
                    {
                        if(donhang.tinhtrang.Equals("đã giao") && !trangthaidonhang.Equals("đã giao"))
                        {
                            donhang.Capnhat_donhangtrangthai(donhang);
                            MessageBox.Show("Cập nhật thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                DataGV_danhsachdonhang.Rows.Clear();
                                danhsachdonhang = BIZ_donhang.Select_donhang();
                                int stt = 0;
                                foreach (BIZ_donhang dh in danhsachdonhang)
                                {
                                    stt++;
                                    string tongtien = dh.tongtien.ToString("c");
                                    tongtien = tongtien.Substring(1, tongtien.LastIndexOf(".") - 1);
                                    string ngaymuahang = dh.ngaymuahang.Date.ToString("dd-MM-yyyy");
                                    string ngaygiaohang = dh.ngaygiaohang.Date.ToString("dd-MM-yyyy");
                                    DataGV_danhsachdonhang.Rows.Add(stt, dh.madonhang, dh.user.username, dh.user.hoten,
                                                                    ngaymuahang, ngaygiaohang, dh.diachigiaohang, tongtien, dh.tinhtrang);
                                }    
                        }
                        else
                        {
                            donhang.Capnhat_donhangkhongtrangthai(donhang);
                                MessageBox.Show("Cập nhật thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                DataGV_danhsachdonhang.Rows.Clear();
                                danhsachdonhang = BIZ_donhang.Select_donhang();
                                int stt = 0;
                                foreach (BIZ_donhang dh in danhsachdonhang)
                                {
                                    stt++;
                                    string tongtien = dh.tongtien.ToString("c");
                                    tongtien = tongtien.Substring(1, tongtien.LastIndexOf(".") - 1);
                                    string ngaymuahang = dh.ngaymuahang.Date.ToString("dd-MM-yyyy");
                                    string ngaygiaohang = dh.ngaygiaohang.Date.ToString("dd-MM-yyyy");
                                    DataGV_danhsachdonhang.Rows.Add(stt, dh.madonhang, dh.user.username, dh.user.hoten,
                                                                    ngaymuahang, ngaygiaohang, dh.diachigiaohang, tongtien, dh.tinhtrang);
                                }
                        }
                        txtmadonhang.Text = null;
                        txttenkhachhang.Text = null;
                        txtsodienthoai.Text = null;
                        txttongtien.Text = null;
                        txtngaydatmua.Text = null;
                        txtdiachi.Text = null;
                        cbb_tinhtrang.Text = null;
                    }
                }
        }

        private void btnxuathoadon_Click(object sender, EventArgs e)
        {
            if (danhsachchitietdonhang.RowCount < 1)
                MessageBox.Show("Vui lòng chọn đơn hàng", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else
            {
                Report rp = new Report();
                rp.ExportToExcel_hoadon(txtmadonhang, txtngaydatmua, ngaygiao, txttenkhachhang, txtdiachi, txtsodienthoai, txttongtien, danhsachchitietdonhang);
            }
        }
    }
}
